Given a limited amount of flash memory in a data center, it becomes necessary at times to divide that pool of memory between different file owners/file groups to maximize the fraction of reads going to flash rather than disks. This need may arise because disk drives and flash memory have different characteristics. Flash memory can support a much higher read rate than disk drives, but it is more expensive per byte and wears out after much more quickly than a disk drive. A data center is likely to have a lot of disk capacity available but, due to the cost, relatively little flash memory—perhaps only 1% of the disk capacity, or even less. It is therefore preferable if the most accessed files reside in flash, while less frequently used files are placed on disk. This allows the data center to quickly access the more frequently-used data without putting excess strain on the available flash memory.
Since files are most heavily read soon after they are written, one way to ensure that the most read files are in flash is to write the files first to flash, and to move them to disk in a first-in first-out (FIFO) order as the flash memory fills up. However, it is also known that different users' files and different file groups have different characteristics—some files, such as log files, are seldom read. The FIFO placement method does not distinguish between the types of files or their owners, and is therefore sub-optimal. It would be preferable to allocate different amounts of flash memory to different file groups depending upon their usual workloads. Such an allocation scheme, however, requires determining, on an on-going basis, how much flash memory to allocate to each file group or user.